//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "NeuroneReseau.h"

#ifndef NoeudReseauH
#include "NoeudReseau.h"
#endif

#include <assert.h>

//---------------------------------------------------------------------------

#pragma package(smart_init)


__fastcall NeuroneReseau::NeuroneReseau(NoeudReseau * dest)
{
  assert (dest != NULL);

  FDestinataire = dest;
  FInformateurs = new TList();
}

__fastcall NeuroneReseau::~NeuroneReseau()
{
  Detacher();
  delete FInformateurs;
}

void __fastcall NeuroneReseau::EtablirLiaisonAvec(NeuroneReseau * n)
{
  assert (n != NULL);

  if (FInformateurs->IndexOf(n) != -1)
    FInformateurs->Add(n);

  if (n->FInformateurs->IndexOf(this) != -1)
    n->FInformateurs->Add(this);
}

void __fastcall NeuroneReseau::SuppimerLiaisonAvec(NeuroneReseau * n)
{
  assert (n != NULL);
  FInformateurs->Remove(n);
  n->FInformateurs->Remove(this);
}

void __fastcall NeuroneReseau::Detacher (void)
{
  int nbInformateurs = FInformateurs->Count;
  for (int i = 0; i < nbInformateurs; i++) {
    NeuroneReseau * n = (NeuroneReseau *) FInformateurs->Items[i];
    n->FInformateurs->Remove(this);
  }
  FInformateurs->Clear();
}


